package com.etc.dao;

import com.etc.entity.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;


@Repository
public interface LiveDao {

    /**
     * 根据ID查询直播间
     * @param roomId
     * @return
     */
    Room queryRoomById(@Param("roomId") String roomId);

    /**
     * 查询所有直播间
     * @return
     */
    List<Room> queryRoom(@Param("anchor")String anchor,@Param("roomName")String roomName);

    /**
     * 修改礼物
     * @return
     */
    Integer updataGift(Gift gift);
    
    /**
     * 添加房间
     * @param room
     * @return
     */
    Integer addRoom(Room room);

    /**
     * 根据用户ID找直播间
     * @param userId
     * @return
     */
    Room queryRoomToUserId(String userId);
    /**
     * 更新直播间信息
     * @param room
     * @return
     */
    Integer updateRoom(Room room);

    /**
     * 删除房间
     * @param roomId
     * @return
     */
    Integer deleteRoom(@Param("roomId")String roomId);


    /**
     * 查询所有分类
     * @param typeName
     * @return
     */
    List<Type> queryType(@Param("typeName")String typeName);

    /**
     * 根据分类名查询分类
     * @param typeName
     * @return
     */
    Type queryTypeByTypeName(@Param("typeName")String typeName);

    /**
     * 跟分类Id查询
     * @param typeId
     * @return
     */
    Type queryTypeByTypeId(@Param("typeId")String typeId);

    /**
     * 删除
     * @param typeId
     * @return
     */
    Integer deleteType(String typeId);

    /**
     * 添加分类
     * @param type
     * @return
     */
    Integer addType(Type type);

    /**
     * 修改分类
     * @param type
     * @return
     */
    Integer updateType(Type type);
    
    /**
     * 查询所有用户
     * @param userName
     * @return
     */
    List<User> queryUser(@Param("userName")String userName);
    
    /**
     * 添加弹幕
     * @param chat
     * @return
     */
    Integer addChat(@Param("chat") Chat chat);

    /**
     * 查询所有礼物
     * @return
     */
    List<Gift> queryGiftList();

    /**
     * 根据id查询礼物
     * @param giftId
     * @return
     */
    Gift queryGiftById(String giftId);
    
    /**
     * 根据Id查询用户
     * @param userId
     * @return
     */
    User queryUserById(String userId);
    
    /**
     * 添加礼物记录
     * @param giftId
     * @param userId
     * @return
     */
    Integer addGiftRecord(@Param("giftId") String giftId,@Param("userId")String userId);

    /**
     * 礼物扣钱
     * @param price
     * @return
     */
    Integer updateUserPrice(@Param("price") BigDecimal price,@Param("userId")String userId);

    /**
     * 查询所有礼物分页
     * @return
     */
    List<Gift> queryGift(@Param("giftName") String giftName);

    /**
     * 添加礼物
     * @param gift
     * @return
     */
    Integer addGift(Gift gift);

    /**
     * 删除礼物
     * @param giftId
     * @return
     */
    Integer deleteGift(String giftId);

    /**
     * 礼物记录
     * @param giftRecordId
     * @param giftName
     * @return
     */
    List<GiftRecord> queryGiftRecordList(@Param("giftRecordId")String giftRecordId,@Param("giftName") String giftName);

    /**
     *所有分类
     * @return
     */
    /*List<Type> queryTypeList();
    List<Room> queryRoomListById(String typeId);
    List<Video> queryVideoListById(String typeId);*/

    /**
     * 根据关注人数排序
     * @return
     */
    List<Room> queryRoomListToConcernNum();

}
